Computer graphics systems are widely used in personal computer interfaces, desk top publishing, computer aided design applications, scientific simulations, military and industrial process control and communications networks, and in various education, training and entertainment fields. The breadth of utility of computer graphics systems in so many diverse areas is based upon the singular effectiveness of communicating large volumes of information by means of visual images and the ease, and often the enjoyment, with which humans accept visually presented data. The ability of the computer industry to consistently provide increasingly efficient and economically produced graphics hardware is, however, dependent to large degree upon the costs of electronic components and the development of improved system architectures and methods for graphics image generation.
Many conventional interactive computer graphics systems employ an applications object model library, an applications program to access, create and process the library of object models, and an image generation system to convert the object models to screen images which may be displayed on a display device such as a computer monitor. To increase usefulness with current display technologies, it is beneficial for an image generation system to be capable of producing a two dimensional frame or screen defined in screen coordinates from a selected group of objects defined in model space. However, such a conversion from an object model to a format suitable for display as a screen is a computationally intense task which can require high levels of a computing systems resources. Thus, the techniques employed to create the contents of a frame (i.e. a complete screen image) and the computer hardware used to generate the data required to describe a frame in many cases determine the effectiveness of a computer graphics system. This relationship is especially true in the area of high performance and intensively user interactive computer graphics systems.
In a conventional object model oriented graphics system, the object models, or more simply objects, are digitally formatted geometric descriptions of two or three dimensional objects. An object's description typically consists of a set of geometric primitives. A primitive can be a point, line or polygon defined by one or a set of vertices defined in model space coordinates. The geometric primitives combine to create an object model.
In an interactive graphics system, the applications program responds to user input by selecting objects from the applications model library. In fact, certain graphics systems allow the applications program to wholly create new object models. The application program informs the graphics system as to which models are to be displayed and how they are to be displayed, along with the geometric description of each object on a frame by frame or screen by screen basis.
To create a screen image the application program defines the description of the image in terms of the object models in the image. Modeling transformation and the viewing operation (i.e. converting from a 3D model to a two dimensional view of that model) are next sequentially performed, followed by rasterization. Modeling transformation and the viewing operation are referred to as front-end or geometry processing. Rasterization, or back-end processing, includes the steps of visible surface determination, scan conversion and shading/illumination.
Early raster display architectures provided a system consisting of a system communications bus, a central processing unit(CPU), system memory, a frame buffer, a video controller and a video monitor. The frame buffer could consist of a dedicated memory device or devices, or it may have resided anywhere within the system memory. The CPU, system memory and video controller were all three connected to the system communications bus, through which data, control and status signals were transmitted. In such a system the CPU was required to carry out all of the functions in generating a screen image. This system was not efficient because a general purpose CPU was not well suited to the highly iterative tasks of generating a screen image.
An alternate architecture further included a separate display processor and display processor memory through which the video controller was connected to the system communications bus. The display processor performed many of the calculations required to generate frame data, and, therefore, reduced the computational load placed on the system CPU by the applications program. The Texas Instruments TMS34020 peripheral display processor is an example of a device intended for use as a display processor. However, simply segregating the display functions from the CPU in certain instances may not effectively support graphic intense applications such as full motion video and multimedia entertainment applications.
The application of multi-processing methodologies, to include pipelining and parallelized computing, has also been attempted to increase the speed with which the large volumes of computation required in graphics image computations could be performed. The inclusion of pipeline and parallel processors are fundamental to the performance of many high performance graphics systems such as the Pixel-Planes and Pixel Flow systems described in U.S. Pat. Nos. 5,388,206 and 5,481,669, to cite examples. These systems include a plurality of logic enhanced memory elements. Each logic enhanced memory element possesses a dedicated arithmetic logic unit (ALU) and a small strip of digital memory. The Pixel-Planes design further includes a linear expression tree, which evaluates linear expressions devised in the form of f(x,y)=Ax+By+C in parallel for every pixel of the screen or region of the screen. Each processing element is dedicated to calculating values for a single pixel. There is only limited capacity for direct interprocessing element communication and the processing elements are, therefore, constrained in the types of functions that they may perform.
Because parallel processing has such advantages in image generation, it is desirable to utilize a processing element array such as that used in Pixel-Planes and Pixel-Flow. However, despite the advances in image generation systems, additional work is necessary to reduce the amount of hardware required to provide high speed image generation and to off-load as much processing function from the CPU as is possible.